package com.duobaoyu.dby.supply.common.biz.bo.refund;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Created by shuming on 2023/10/19 16:24
 */
@Data
public class AfterSaleCreateSplitInBO {

    /**
     * 业务来源
     */
    private Integer afterSaleSource;
    /**
     * 业务订单号
     */
    @NotBlank(message = "业务订单号不能为空")
    private String supplyTradeSn;
    /**
     * 访问来源
     */
    @NotBlank(message = "访问来源不能为空")
    private String serverName;

    /**
     * 实际业务渠道
     */
    @NotBlank(message = "业务渠道不能为空")
    private String showServerName;
    /**
     * 业务方售后申请编号
     */
    @NotBlank(message = "业务方售后申请编号不能为空")
    private String bizAfterSaleSn;

    /**
     * 客户期望售后类型
     */
    @NotNull(message = "售后类型不能为空")
    private Integer afterSaleType;

    /**
     * 明细
     */
    private List<Item> items;

    @Data
    public static class Item {

        /**
         * 订单编码
         */
        private String orderSn;
        /**
         * 商品编码(SKU)
         */
        private String skuCode;

        /**
         * 商品申请数量
         */
        private Integer applyNum;

        /**
         * 问题描述文字
         */
        private String questionDesc;

        /**
         * 问题描述图片，最多2000字符，支持多张图片，用逗号分隔（英文逗号）
         */
        private List<String> questionPic;
        /**
         * 售后原因编码
         */
        private String reasonCode;
        /**
         * 售后原因说明
         */
        private String reasonName;

        /**
         * 货物状态
         */
        private Integer goodStatus;
        /**
         * 申请退款金额
         */
        private BigDecimal applyRefundAmount;

        /**
         * 描述：运费申请退款金额
         */
        private BigDecimal freightApplyRefundAmount;
    }

    /**
     * 取件
     * 订单编码：AfterSalePickUpBO
     */
    private Map<String, AfterSalePickUpBO> pickUpMap;

    /**
     * 返件地址
     * 订单编码：AfterSaleReturnShipmentBO
     */
    private Map<String, AfterSaleReturnShipmentBO> returnShipmentMap;

    /**
     * 返件地址
     * 订单编码：AfterSaleReturnShipmentBO
     */
    private Map<String, AfterSaleContactInfoBO> customerInfoMap;
}
